package com.jrauto.CarAppBackend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jrauto.CarAppBackend.entity.Message;
import com.jrauto.CarAppBackend.entity.dto.MessageDTO;

import java.util.List;

/**
* @author huimin
* @description 针对表【messages(消息表)】的数据库操作Service
* @createDate 2025-09-10 18:45:33
*/
/**
 * 消息服务接口
 */
public interface MessageService extends IService<Message> {

    /**
     * 发送消息
     */
    MessageDTO sendMessage(Integer roomId, Integer senderId, Integer receiverId,
                           String messageType, String content);

    /**
     * 分页查询聊天室消息
     */
    IPage<MessageDTO> getRoomMessages(Integer roomId, Integer page, Integer size);

    /**
     * 获取用户未读消息
     */
    List<MessageDTO> getUnreadMessages(Integer userId);

    /**
     * 标记消息为已读
     */
    boolean markMessagesAsRead(Integer roomId, Integer userId);

    /**
     * 统计未读消息数量
     */
    Integer countUnreadMessages(Integer roomId, Integer userId);

    /**
     * 获取最新消息
     */
    MessageDTO getLatestMessage(Integer roomId);

    /**
     * 获取房间内的用户ID列表
     */
    List<Integer> getRoomUserIds(Integer roomId);

    /**
     * 获取用户的离线消息
     */
    List<Message> getOfflineMessages(Integer userId);

    /**
     * 批量标记消息为已读
     */
    boolean markMessagesAsRead(List<Message> messages);
}